<?php

/**
* Class này cho phép tương tác với Account trên hệ thống Bảo Kim
*
*/
class CardApi extends RestModel
{
	protected $_httpUsr = CORE_API_HTTP_USR;
	protected $_httpPwd = CORE_API_HTTP_PWD;
	protected $_rsaPrvKey = CORE_API_RSA_PRIVATE_KEY;

	protected $_modelClassId = __CLASS__;
	public $option;
	/**
	* @inheritdoc
	*
	* @return ReceiptVoucher
	*/
	public static function model($className=__CLASS__)
	{
		return parent::model($className);
	}

	function restBaseUrl()
	{
		return 'https://www.baokim.vn/the-cao/saleCard/wsdl';
	}

	/**
	 * @inheritdoc
	 */
	public function attributeNames()
	{
		return array(
			'pin',
			'seri',
		);
	}

	/**
	* @inheritdoc
	*
	*/
	public function callers()
	{
		return CMap::mergeArray(parent::callers(), array(
			'charge'=>array(
				'class'=>'RESTCaller',
				'url'=>'https://www.baokim.vn/the-cao/saleCard/wsdl',
				'httpUsername'=>CORE_API_HTTP_USR,
				'httpPassword'=>CORE_API_HTTP_PWD,
				'rsaPrivateKey'=>CORE_API_RSA_PRIVATE_KEY,

				'logModelClass'=>'CoreRestApiLog',
				'logRequest'=>true,
			),
		));
	}


   /**
    * API chuyển tiền
    * - Thực hiện tạo GD chuyển tiền từ tk chuyển sang tk nhận trên hệ thống bảo kim
    *
    * Mô tả REST
    * 
    * @method post
    * @param [required|optional] int $to_account_id Mã TK nhận tiền
    * @param [required|optional] string $to_account_email Email TK nhận tiền
    * @param [required|optional] string $to_account_phone_no Phone no TK nhận tiền
    * @param [required] float $amount Số tiền chuyển
    * @param [optional] int $transaction_mode_id Chế độ chuyển tiền (1: trực tiếp, 2: an toàn), mặc định: trực tiếp
    * @param [optional]]int $escrow_timeout Số ngày tạm giữ
    * @param string $description Thông điệp chuyển tiền
    * @return http_status_code
    *   200: OK
    *   450: Không tạo được tài khoản cho người dùng
    * @return $data
    *   string $transaction_id   Mã GD nạp thẻ cào
    * API_URI /transactions/rest/baokim_card_api/charge
    * 
    */
	public function charge($amount=0,$email=null,$account_id=null,$phone=null,$transaction_mode_id=1,$escrow_timeout=0,$description=null)
	{
		if($account_id==null && $email==null & $phone=-null) return null;
		
		$restCaller = $this->getCaller('charge');
		$data = $restCaller->post(array(
			'to_account_id' => $account_id,
			'to_account_email' => $email,
			'to_account_phone_no' => $phone,
			'amount' => $amount,
			'transaction_mode_id' => $transaction_mode_id,
			'escrow_timeout' => $escrow_timeout,
			'description' => $description,
		));

		$code = $restCaller->getCode();
		if ($code == 200) return $data;
		else return null;
	}
}


